/**
 * jims
 */
package com.jims.master.modules.operation.entity;

import org.hibernate.validator.constraints.Length;

import java.beans.Transient;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import javax.validation.constraints.NotNull;

import com.jims.master.common.persistence.DataEntity;

/**
 * 手术安排Entity
 * @author DT
 * @version 2017-04-13
 */
public class OperationSchedule extends DataEntity<OperationSchedule> {

	private static final long serialVersionUID = 1L;
	private String applyId;		//手术申请ID
	private String clinicId;		// 就诊记录ID
	private String visitId;		// 住院ID
	private String patientId;		// 病人信息Id
	private String inoroutFlag;		// 住院/门诊
	private String operNo;		// 本次入院手术次数
	private Date scheduledDate;		// 手术日期及时间
	private Date makeDate;		// 手术预约时间
	private String operatingRoomId;		// 手术室
	private String operatingRoomNo;		// 手术间
	private String operatingRoomName;		//手术室名称
	private String operatingNoName;		//手术间名称
	private String diagBeforeOperation;		// 术前主要诊断
	private String patientCondition;		// 病情说明(危/重/一般)
	private String operationScale;		// 手术等级
	private String isolationIndicator;		// 隔离标志
	private String doctorUser;		// 手术开单医生
	private String operationDeptId;		// 手术开单科室
	private String doctorName;		//开单医生
	private String operationName;			//开单科室名称
	private String anesthesiaMethod;		// 麻醉方法
	private String emergencyFlag;		// 0-择期 1-急诊
	private String opsBodyPart;		// 手术部位
	private String provideWay;		// 供血方式
	private String operStatus;		// 手术状态：0申请/1确认/2已做手术
	private String patientName;	//病人名字
	private OperationNameBefore operationNameBefore;
    private OperationNameApply operationNameApply;

    public OperationNameApply getOperationNameApply() {
        return operationNameApply;
    }

    public void setOperationNameApply(OperationNameApply operationNameApply) {
        this.operationNameApply = operationNameApply;
    }

    private List<OperationNameBefore> operationNameBefores;//手术项目

    public List<OperationNameApply> getOperationNameApplys() {
        return operationNameApplys;
    }

    public void setOperationNameApplys(List<OperationNameApply> operationNameApplys) {
        this.operationNameApplys = operationNameApplys;
    }

    private List<OperationNameApply> operationNameApplys;//手术项目
	private OperationStaffBefore zdStaffBefore;
	private OperationStaffBefore myStaffBefore;
	private OperationStaffBefore yzStaffBefore;
	private OperationStaffBefore sxStaffBefore;
	private OperationStaffBefore mzStaffBefore;
	private OperationStaffBefore gyStaffBefore;
	private OperationStaffBefore stStaffBefore;

	public String getApplyId() {
		return applyId;
	}
	@Transient
	public String getDoctorName() {
		return doctorName;
	}
	@Transient
	public void setDoctorName(String doctorName) {
		this.doctorName = doctorName;
	}
	@Transient
	public String getOperationName() {
		return operationName;
	}
	@Transient
	public void setOperationName(String operationName) {
		this.operationName = operationName;
	}
	public void setApplyId(String applyId) {
		this.applyId = applyId;
	}
	@Transient
	public String getPatientName() {
		return patientName;
	}
	@Transient
	public void setPatientName(String patientName) {
		this.patientName = patientName;
	}
	@Transient
	public OperationStaffBefore getStStaffBefore() {
		return stStaffBefore;
	}
	@Transient
	public void setStStaffBefore(OperationStaffBefore stStaffBefore) {
		this.stStaffBefore = stStaffBefore;
	}
	@Transient
	public OperationStaffBefore getMyStaffBefore() {
		return myStaffBefore;
	}
	@Transient
	public void setMyStaffBefore(OperationStaffBefore myStaffBefore) {
		this.myStaffBefore = myStaffBefore;
	}
	@Transient
	public OperationStaffBefore getYzStaffBefore() {
		return yzStaffBefore;
	}
	@Transient
	public void setYzStaffBefore(OperationStaffBefore yzStaffBefore) {
		this.yzStaffBefore = yzStaffBefore;
	}
	@Transient
	public OperationStaffBefore getSxStaffBefore() {
		return sxStaffBefore;
	}
	@Transient
	public void setSxStaffBefore(OperationStaffBefore sxStaffBefore) {
		this.sxStaffBefore = sxStaffBefore;
	}
	@Transient
	public OperationStaffBefore getMzStaffBefore() {
		return mzStaffBefore;
	}
	@Transient
	public void setMzStaffBefore(OperationStaffBefore mzStaffBefore) {
		this.mzStaffBefore = mzStaffBefore;
	}
	@Transient
	public OperationStaffBefore getGyStaffBefore() {
		return gyStaffBefore;
	}
	@Transient
	public void setGyStaffBefore(OperationStaffBefore gyStaffBefore) {
		this.gyStaffBefore = gyStaffBefore;
	}
	@Transient
	public OperationStaffBefore getZdStaffBefore() {
		return zdStaffBefore;
	}
	@Transient
	public void setZdStaffBefore(OperationStaffBefore zdStaffBefore) {
		this.zdStaffBefore = zdStaffBefore;
	}
	@Transient
	public String getOperatingRoomName() {
		return operatingRoomName;
	}
	@Transient
	public void setOperatingRoomName(String operatingRoomName) {
		this.operatingRoomName = operatingRoomName;
	}
	@Transient
	public String getOperatingNoName() {
		return operatingNoName;
	}
	@Transient
	public void setOperatingNoName(String operatingNoName) {
		this.operatingNoName = operatingNoName;
	}

	@Transient
	public OperationNameBefore getOperationNameBefore() {
		return operationNameBefore;
	}
	@Transient
	public void setOperationNameBefore(OperationNameBefore operationNameBefore) {
		this.operationNameBefore = operationNameBefore;
	}

	public List<OperationNameBefore> getOperationNameBefores() {
		return operationNameBefores;
	}

	public void setOperationNameBefores(List<OperationNameBefore> operationNameBefores) {
		this.operationNameBefores = operationNameBefores;
	}

	public OperationSchedule() {
		super();
	}

	public OperationSchedule(String id){
		super(id);
	}

	@Length(min=0, max=64, message="就诊记录ID长度必须介于 0 和 64 之间")
	public String getClinicId() {
		return clinicId;
	}

	public void setClinicId(String clinicId) {
		this.clinicId = clinicId;
	}

	@Length(min=0, max=64, message="住院ID长度必须介于 0 和 64 之间")
	public String getVisitId() {
		return visitId;
	}

	public void setVisitId(String visitId) {
		this.visitId = visitId;
	}

	@Length(min=1, max=64, message="病人信息Id长度必须介于 1 和 64 之间")
	public String getPatientId() {
		return patientId;
	}

	public void setPatientId(String patientId) {
		this.patientId = patientId;
	}

	@Length(min=1, max=1, message="住院/门诊长度必须介于 1 和 1 之间")
	public String getInoroutFlag() {
		return inoroutFlag;
	}

	public void setInoroutFlag(String inoroutFlag) {
		this.inoroutFlag = inoroutFlag;
	}

	@Length(min=1, max=11, message="本次入院手术次数长度必须介于 1 和 11 之间")
	public String getOperNo() {
		return operNo;
	}

	public void setOperNo(String operNo) {
		this.operNo = operNo;
	}

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@NotNull(message="手术日期及时间不能为空")
	public Date getScheduledDate() {
		return scheduledDate;
	}

	public void setScheduledDate(Date scheduledDate) {
		this.scheduledDate = scheduledDate;
	}

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	public Date getMakeDate() {
		return makeDate;
	}

	public void setMakeDate(Date makeDate) {
		this.makeDate = makeDate;
	}

	@Length(min=1, max=64, message="手术室长度必须介于 1 和 64 之间")
	public String getOperatingRoomId() {
		return operatingRoomId;
	}

	public void setOperatingRoomId(String operatingRoomId) {
		this.operatingRoomId = operatingRoomId;
	}

	@Length(min=1, max=64, message="手术间长度必须介于 1 和 64 之间")
	public String getOperatingRoomNo() {
		return operatingRoomNo;
	}

	public void setOperatingRoomNo(String operatingRoomNo) {
		this.operatingRoomNo = operatingRoomNo;
	}

	@Length(min=0, max=80, message="术前主要诊断长度必须介于 0 和 80 之间")
	public String getDiagBeforeOperation() {
		return diagBeforeOperation;
	}

	public void setDiagBeforeOperation(String diagBeforeOperation) {
		this.diagBeforeOperation = diagBeforeOperation;
	}

	@Length(min=0, max=2, message="病情说明(危/重/一般)长度必须介于 0 和 2 之间")
	public String getPatientCondition() {
		return patientCondition;
	}

	public void setPatientCondition(String patientCondition) {
		this.patientCondition = patientCondition;
	}

	@Length(min=0, max=2, message="手术等级长度必须介于 0 和 2 之间")
	public String getOperationScale() {
		return operationScale;
	}

	public void setOperationScale(String operationScale) {
		this.operationScale = operationScale;
	}

	@Length(min=0, max=2, message="隔离标志长度必须介于 0 和 2 之间")
	public String getIsolationIndicator() {
		return isolationIndicator;
	}

	public void setIsolationIndicator(String isolationIndicator) {
		this.isolationIndicator = isolationIndicator;
	}

	@Length(min=0, max=64, message="手术开单医生长度必须介于 0 和 64 之间")
	public String getDoctorUser() {
		return doctorUser;
	}

	public void setDoctorUser(String doctorUser) {
		this.doctorUser = doctorUser;
	}

	@Length(min=0, max=64, message="手术开单科室长度必须介于 0 和 64 之间")
	public String getOperationDeptId() {
		return operationDeptId;
	}

	public void setOperationDeptId(String operationDeptId) {
		this.operationDeptId = operationDeptId;
	}

	@Length(min=0, max=2, message="麻醉方法长度必须介于 0 和 2 之间")
	public String getAnesthesiaMethod() {
		return anesthesiaMethod;
	}

	public void setAnesthesiaMethod(String anesthesiaMethod) {
		this.anesthesiaMethod = anesthesiaMethod;
	}

	@Length(min=0, max=1, message="0-择期 1-急诊长度必须介于 0 和 1 之间")
	public String getEmergencyFlag() {
		return emergencyFlag;
	}

	public void setEmergencyFlag(String emergencyFlag) {
		this.emergencyFlag = emergencyFlag;
	}

	@Length(min=0, max=200, message="手术部位长度必须介于 0 和 200 之间")
	public String getOpsBodyPart() {
		return opsBodyPart;
	}

	public void setOpsBodyPart(String opsBodyPart) {
		this.opsBodyPart = opsBodyPart;
	}

	@Length(min=0, max=2, message="供血方式长度必须介于 0 和 2 之间")
	public String getProvideWay() {
		return provideWay;
	}

	public void setProvideWay(String provideWay) {
		this.provideWay = provideWay;
	}

	public String getOperStatus() {
		return operStatus;
	}

	public void setOperStatus(String operStatus) {
		this.operStatus = operStatus;
	}


}